import os
import sys
import pytest
import asyncio
from sql import MySQLHelper

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

db = MySQLHelper()


@pytest.fixture(scope="session")
def event_loop():
    loop = asyncio.new_event_loop()  # 创建新的事件循环
    asyncio.set_event_loop(loop)  # 将当前事件循环设置为默认循环
    yield loop
    loop.close()  # 测试完成后关闭事件循环


# 修改：延迟关闭数据库连接池，确保在事件循环内关闭
async def pytest_terminal_summary(terminalreporter, exitstatus, config):
    loop = asyncio.get_event_loop()
    if loop.is_running():
        await db.close_pool()  # 等待数据库连接池关闭
    else:
        db.close_pool()  # 如果事件循环已经关闭，直接调用同步方法关闭连接池


def pytest_addoption(parser):
    parser.addoption(
        "--case_ids",
        action="store",
        default="[]",  # 默认值为空列表字符串
        help="Python 列表格式的案例 ID 列表（例如 [92,154]）",
    )
    parser.addoption(
        "--report_id",
        action="store",
        help="测试报告 ID",
    )
